package cn.codinglives.demo.gateway;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.gateway.route.RouteLocator;
import org.springframework.cloud.gateway.route.builder.RouteLocatorBuilder;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class GatewayApplication {

    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }


    @Bean
    public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
        return builder.routes()
                .route("product-service", r -> r.path("/api/product/**")
                        .filters(f -> f.rewritePath("/api/product/(?<segment>.*)", "/product/${segment}"))
                        .uri("http://localhost:8081"))
                .route("logistic-service", r -> r.path("/api/logistic/**")
                        .filters(f -> f.rewritePath("/api/logistic/(?<segment>.*)", "/logistic/${segment}"))
                        .uri("http://localhost:8082"))
                .route("order-service", r -> r.path("/api/order/**")
                        .filters(f -> f.rewritePath("/api/order/(?<segment>.*)", "/order/${segment}"))
                        .uri("lb://order-service"))
                .build();
    }
}
